home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Purity
/
Purity #48 (1995-06-25)(PackMAN)(DE)[WB].zip
/
Purity #48 (1995-06-25)(PackMAN)(DE)[WB].adf
/
ShowIcon
/
showIcon1.p
< prev
next >
Wrap
Text File
|
1995-06-23
|
4KB
|
165 lines
PROGRAM showicon;
{ Dieses Programm zeigt, wie man die Images der Icons auf dem eigenen
Screen darstellt und ist als Testprogramm für AddiPro entstanden, der
ultimativen FD-Adressverwaltung in Pascal auf dem Amiga ! Übrigens demnächst
Auf Purity, Aminet, ... }
USES dos,gadtools,execsupport;
{$incl 'wb.lib','icon.lib'}
VAR win : p_window;
t : Array[1..15] OF TagItem;
msg : p_intuimessage;
ok : BOOLEAN;
pscr : p_screen;
bh : BYTE; {Barheight}
success : BOOLEAN;
i : INTEGER;
ende : BOOLEAN;
{fürs icon}
VAR dobj : p_DiskObject;
gad : Gadget;
gw,gh : INTEGER; { Gadgetwidth, Gadgetheight }
gr,sr : PTR; { GadgetRender,Selectrender }
imptr : p_image; { Zeiger auf das Image }
{ fürs appwindow }
CONST appname='ShowiconV0.1'
version='$VER: Showicon V0.1 rev.0 14.06.95 19.17 UHR'
VAR
appwin: p_appwindow;
apport: p_msgport;
appmsg: p_AppMessage;
winmask,mask,
appsig: LONG;
myarg : p_wbarg;
mydir : BPTR;
dir,name : STRING[256]
{ -- AppWindow-Port -- }
PROCEDURE InitAppPort;
BEGIN
Apport := CreateMsgPort;
IF Apport = NIL THEN
BEGIN
HALT(20);
END;
ApPort^.mp_Node.ln_Name := AppName;
ApPort^.mp_Node.ln_Pri := 0;
ApPort^.mp_SigTask := FindTask(NIL);
AddPort(Apport);
END;
PROCEDURE DeleteAppPort;
VAR
msg : p_Message;
BEGIN
Forbid;
IF ApPort <> NIL THEN
BEGIN
msg := GetMsg(ApPort);
WHILE msg <> NIL DO
BEGIN
ReplyMsg(msg);
msg := GetMsg(ApPort);
END;
RemPort(ApPort);
DeleteMsgPort(ApPort);
END;
ApPort := NIL;
Permit;
END;
PROCEDURE dobjkram;
BEGIN
IF name[length(name)]='/' THEN name[length(name)]:=CHR(0); {für Verzeichnisse!}
dobj:= GetDiskObjectNew(name);
gad:=dobj^.do_gadget;
imptr:=p_image(gad.GadgetRender); { das 1. image holen. Der Zeiger muß gewandelt werden! }
DrawImage(win^.rport,imptr,win^.borderleft,bh+1); {in die linke obere Ecke zeichnen}
freediskobject(dobj); { freigeben nicht vergessen }
setwindowtitles(win,name,ptr(-1)); {Iconname ausgeben}
END;
PROCEDURE openlibs;
BEGIN
OpenLib(WorkbenchBase, "workbench.library", 37);
OpenLib(IconBase,"icon.library",0);
END;
BEGIN
openlibs;
ende:=FALSE;
pscr:=lockpubScreen('Workbench');
bh:=pscr^.barheight;
initappPort;
unLockPubScreen(NIL,pscr);
t[1]:=TagItem(WA_InnerWidth,200);
t[2]:=TagItem(WA_InnerHeight,100);
t[3].ti_Tag:=WA_Title;
t[3].ti_data:='Showicon1 (c) 14.06.95 by Røgersøft';
t[4]:=TagItem(WA_Idcmp,IDCMP_CLOSEWINDOW);
t[5]:=TagItem(WA_Flags,WFLG_CLOSEGADGET+WFLG_DRAGBAR+WFLG_ACTIVATE+
WFLG_DEPTHGADGET+WFLG_SMART_REFRESH+WFLG_NOCAREREFRESH);
t[6]:=TagItem(WA_Left,50);
t[7]:=TagItem(WA_Top,25);
t[8].ti_Tag:=TAG_DONE;
win:=OpenWindowTaglist(NIL,^t);
IF win=NIL THEN exit;
GT_Refreshwindow(Win,NIL);
Appwin:=AddAppwindowA(1,0,win,Apport,NIL);
IF AppWin=NIL THEN
BEGIN
Closewindow(win);
HALT(20);
END;
winmask:=LONG(1) SHL LONG(win^.Userport^.mp_SigBit);
AppSig:=LONG(1) SHL LONG(Apport^.mp_SigBIt);
REPEAT
mask:=_wait(winmask OR Appsig);
IF (mask AND appsig)=AppSig THEN
BEGIN
appmsg:=p_AppMessage(GetMsg(Apport));
WHILE (appmsg<>NIL) DO
BEGIN
IF (appmsg^.am_Type=MTYPE_APPWINDOW) THEN
BEGIN
myarg:=appmsg^.am_arglist;
name:=myarg^.wa_name;
mydir:=myarg^.wa_lock;
i:=NameFromLock(mydir,^dir,255);
IF dir[length(dir)]<>':' THEN dir:=dir+'/';
name:=dir+name;
dobjkram;
END;
Replymsg(p_message(appmsg));
appmsg:=p_appmessage(GetMsg(apport));
END; { Of WHILE }
END;
IF (mask AND winmask) = winmask THEN
BEGIN
msg:=GT_getImsg(win^.userport);
WHILE msg<>NIL DO
BEGIN
GT_ReplyImsg(msg);
CASE msg^.Class OF
IDCMP_CLOSEWINDOW: ende:=TRUE;
ELSE END; {OF CASE }
msg:=GT_GetImsg(win^.Userport);
END;
END;
UNTIL ende;
ok:=RemoveAppwindow(appwin);
DeleteAppPort;
Closewindow(win);
END.